直線で分離できないデータの分類に苦戦する線形モデルの限界を超えていきます。今日の課題は、PyTorchのワークフローを活用して、深層ニューラルネットワーク(DNN)複雑な非線形の決定境界を学習できる複雑な非線形の決定境界現実世界の分類タスクに不可欠です。
1. 非線形データの必要性を視覚化する
最初のステップとして、二つの月型分布のような挑戦的な合成データセットを作成し、シンプルな線形モデルがなぜ失敗するかを視覚的に示します。この設定により、クラスを分けるための複雑な曲線を近似するために、深層アーキテクチャを使用する必要があります。
データの特性
- データ構造:合成データの特徴(例:2次元の特徴を持つ1000サンプルのデータ、$1000 \times 2$)。
- 出力タイプ:単一の確率値であり、通常は
torch.float32であり、クラス所属を表します。 - 目的:レイヤーによる計算を通じて、曲線的な決定境界を生成すること。
非線形活性化関数の強力さ
深層ニューラルネットワーク(DNN)の基本原理は、ReLUなどの関数を用いて隠れ層に非線形性を導入することです。ReLUこれらがない場合、層を積み重ねても、深さに関係なく単一の大規模な線形モデルにしかなりません。
TERMINALbash — classification-env
> 準備完了。実行するには「実行」をクリックしてください。
>
テンソルインスペクターライブ
コードを実行してアクティブなテンソルを確認してください。
質問1
隠れ層におけるReLU活性化関数の主な目的は何ですか?
質問2
バイナリ分類タスクにおいて、出力層に必要な活性化関数はどれですか?出力層ですか?
質問3
シグモイド出力を使用したバイナリ分類問題に直接対応する損失関数はどれですか?
チャレンジ:コアアーキテクチャの設計
非線形学習のためのアーキテクチャコンポーネントの統合。
あなたは二つの月型タスク用に
nn.Moduleを構築しなければなりません。入力特徴:2。出力クラス:1(確率)。ステップ1
このDNNの1つの隠れ層における計算フローを説明してください。
解答:
入力 $\to$ 線形層(重み行列) $\to$ ReLU活性化 $\to$ 次の層への出力。
入力 $\to$ 線形層(重み行列) $\to$ ReLU活性化 $\to$ 次の層への出力。
ステップ2
入力形状が$(N, 2)$でBCE損失を使用する場合、最終層のサイズはどのようになりますか?
解答:
各サンプルに対して単一の確率スコアを生成するため、出力層のサイズは$(N, 1)$にする必要があります。これはラベルの形状と一致します。
各サンプルに対して単一の確率スコアを生成するため、出力層のサイズは$(N, 1)$にする必要があります。これはラベルの形状と一致します。